Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.1K
Visualizações
TypeORM: "No hay migraciones pendientes" al intentar ejecutar migraciones manualmente

Tengo una nueva aplicación web y he escrito un migrador para crear una tabla de usuarios. Sin embargo, no importa lo que intente, typeorm no parece encontrar este migrador y, por lo tanto, no lo ejecuta.

Mi estructura de archivos (no se muestran otros archivos/carpetas):

 ├── Server │ ├── dist | | ├── Migrations | | | ├── 1234567891234567890-AddUserTable.js | | | ├── 1234567891234567890-AddUserTable.js.map | | | ├── 1234567891234567890-AddUserTable.d.ts │ ├── src | | ├── Migrations | | | ├── 1234567891234567890-AddUserTable.ts | | ├── app.module.ts

aplicación.módulo.ts

 @Module({ imports: [ ConfigModule.forRoot({ envFilePath: '.env' }), TypeOrmModule.forRootAsync({ imports: [ConfigModule], useFactory: (configService: ConfigService) => ({ type: 'mysql', host: configService.get('TYPEORM_HOST'), port: +configService.get<number>('TYPEORM_PORT'), username: configService.get('TYPEORM_USERNAME'), password: configService.get('TYPEORM_PASSWORD'), database: configService.get('TYPEORM_DATABASE'), synchronize: configService.get('TYPEORM_SYNCHRONIZE'), entities: [__dirname + '/**/*.entity{.ts,.js}'], migrations: [__dirname + '/Migrations/**/*.js'], migrationsRun: false, cli: { migrationsDir: './Migrations', }, }), inject: [ConfigService], }), ], controllers: [], providers: [], }) export class AppModule { constructor(private connection: Connection) {} }

Para ejecutar esto, en la ventana de mi consola, escribo: nest start para iniciar mi servidor.

Luego, ejecuto npx typeorm migration:run que obtengo:

 query: SELECT * FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA` = 'myDB' AND `TABLE_NAME` = 'migrations' query: SELECT * FROM `myDB`.`migrations` `migrations` ORDER BY `id` DESC No migrations are pending

Si miro en mi base de datos, veo una tabla de migrations sin entradas dentro.

He intentado eliminar mi archivo de migrador y crearlo de nuevo con una marca de tiempo más reciente y tampoco funciona.

 npx typeorm migration:create -n "MyMigratorName"

Cualquier ayuda sería muy apreciada.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Para cualquiera que venga aquí en busca de ayuda:

La configuración anterior menciona las migraciones que se encuentran en los archivos js:

migrations: [__dirname + '/Migrations/**/*.js'],

Sin embargo, a partir de la estructura de carpetas, está claro que las migraciones se escriben en archivos ts, no en js.

Para ejecutar migraciones desde ts, siga la forma recomendada oficialmente que se describe aquí:

https://github.com/typeorm/typeorm/blob/master/docs/using-cli.md#if-entities-files-are-in-typescript

Además, en ese caso, no olvide actualizar el blob de migraciones para que sea ts:

migrations: [__dirname + '/Migrations/**/*.ts'],

Si desea ejecutar las migraciones desde archivos js, deberá proporcionar la ubicación desde la carpeta dist después de que los archivos ts se hayan compilado en el formulario js.

over 4 years ago · Santiago Trujillo Relatório

0

Typeorm solo carga la migración desde archivos con extensión js,

En el archivo ormconfig donde configuraste tu conexión;

 { "type": "mysql", "host": "localhost", "port": 3306, "username": "test", "password": "test", "database": "test", "entities": ["entity/*.js"], "migrationsTableName": "custom_migration_table", "migrations": ["migration/*.js"], "cli": { "migrationsDir": "migration" } }

"migrations": ["migration/*.js"] : indica que typeorm cargará las migraciones desde el directorio de "migración" dado.

si su carpeta de migración está almacenada en un directorio dist o src,

"migrations": ["migration/*.js"] ahora será "migrations": ["dist/migration/*.js"] o "migrations": ["src/migration/*.js"] , el * significa cualquier nombre de archivo de migración. Solo asegúrese de que el directorio o los directorios colocados aquí ["migration/*.js"] conduzcan a donde están sus archivos de migración

"migrationsDir": "migration" : indica que la CLI debe crear nuevas migraciones en el directorio "migration". así que cualquier directorio que especifique aquí es donde se crearán sus archivos de migración.

Tenga en cuenta que si sus archivos de migración tienen extensiones mecanografiadas (.ts), debe compilar sus archivos de migración en archivos javascript; si no, typeorm no los encontrará.

over 4 years ago · Santiago Trujillo Relatório

0

Además de la respuesta dada por @Upka Uchechi

Si está utilizando mecanografiado, debe ejecutar los siguientes comandos

 $ npm run build # This will compile the typescript files into JavaScript files $ npm run typeorm -- migration:run

Para dar un poco más de contexto. Si sus archivos de configuración se ven en <PROJECT ROOT>/db-migrations , el comando de compilación anterior debería mover los archivos JavaScript compilados a <PROJECT ROOT>/dist/db-migrations . Para eso, su archivo de configuración se vería así

 ... "migrations": ["dist/db-migrations/*.js"], ...
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda